 <?
//## Property 파일 인크루드(전역변수 포함)
include_once ($_SERVER['DOCUMENT_ROOT']."/inc/property.inc.php");

 //## 사용자 정의 함수
 
 //## 변수의 이름을 구하는 함수
 function vname(&$var, $scope=false, $prefix='unique', $suffix='value') 
 { 
 	if($scope) $vals = $scope; 
    else $vals = $GLOBALS; 
    $old = $var; 
    $var = $new = $prefix.rand().$suffix; 
    $vname = FALSE; 
    
    foreach($vals as $key => $val) { 
      if($val === $new) $vname = $key; 
    } 
    $var = $old; 
    
    return $vname; 
  }
 
 //## iconv를 활용한 인코딩
 function iconvEncode($str)
 {
 	$encode = iconv("utf-8","euckr",rawurldecode($str));	
	return $encode;
 }
 
  //## iconv를 활용한  디코딩
 function iconvDecode($str)
 {
 	$encode = iconv("euckr","utf-8",$str);
	return $encode;
 }
 
//## 마이크로 타임 구하기
function get_mtime(){ 
	list($usec, $sec) = explode(" ",microtime()); 
	return ((float)$usec + (float)$sec); 
}
 
 //##  Insert 쿼리 만드는 함수, $table은 Table명, $fields는 배열로 저장된 값.
 function mkInsertQuery($table, $fields)
 {	
	$query = "";
	$fieldQuery = "";
	$valueQuery = "";
	$table = strtoupper($table);
 	
 	krsort($fields);
 	foreach ($fields as $key => $val) 
 	{
 		if ($fieldQuery) { $fieldQuery .= ", "; $valueQuery .= ", "; }
 		$fieldQuery .= strtoupper($key);
		$valueQuery .= "'" .$val ."'";     
 	}
	
	$valueQuery = "INSERT INTO {$table}({$fieldQuery}) VALUES ({$valueQuery})";
	
	return $valueQuery;
 }
  
 //##  Update 쿼리 만드는 함수, $table은 Table명, $fields는 배열로 저장된  update될 값, $condition은 배열로 저장된 조건 값.
 function mkUpdateQuery($table, $fields, $condition='')
 {	
	$query = "";
	$fieldQuery = "";
	$conditionQuery = "";
	$table = strtoupper($table);
 	
 	krsort($fields);
 	foreach ($fields as $key => $val) 
 	{
 		if ($fieldQuery) { $fieldQuery .= ", "; }
 		$fieldQuery .= strtoupper($key) ."='" .$val ."'";     
 	}
	
	if ($condition)
	{
	 	krsort($condition);
	 	foreach ($condition as $key => $val) 
	 	{
	 		if ($conditionQuery) { $conditionQuery .= " AND "; }
	 		$conditionQuery .= strtoupper($key) ."='" .$val ."'";     
	 	}
		$conditionQuery = " WHERE " .$conditionQuery;
	}
	
	$valueQuery = "UPDATE {$table} SET {$fieldQuery}" .$conditionQuery;
	
	return $valueQuery;
 }

//## 쿼리 결과를 하나의 배열(Json용)로 리턴해 준다.
function makeJSONArray($sql, $container)
{
	$sql_start_tm = get_mtime(); 	// 쿼리 시작 시간
	
	$result = mssql_query($sql);	
	$fieldLength = mssql_num_fields($result);
	$container = strtoupper($container);
	$jsonRows = Array();
	$jsonResult = Array();
	
	$rowCnt = 0;
    $fieldNames = "";
	
	while($row = mssql_fetch_array($result))
	{
		for ($k=0; $k<$fieldLength; $k++)
		{
			$fieldNm = mssql_field_name($result, $k);
			$vFieldNm = strtoupper($fieldNm);
            if ($rowCnt == 0) {
                if ($fieldNames) $fieldNames .= ",";
                $fieldNames .= $vFieldNm;
            }
			$cellValue = str_replace("\"","'",$row[$fieldNm]);
			$jsonRows[$vFieldNm] = urlencode(str_replace("\n", "<br />",$cellValue));
		}
		$jsonResult[$container][] = $jsonRows;
		$rowCnt++;
	}
	
	$sql_exec_tm = get_mtime() - $sql_start_tm; // 쿼리 종료 시간으로 총 소요시간 구하기

    $jsonResult['KEYS'] = $fieldNames;
	$jsonResult['TOTAL_COUNT'] = $rowCnt;
	$jsonResult['EXEC_TIME'] = floor($sql_exec_tm*100000)/100000;
	return $jsonResult;
}

//## 쿼리 결과를 하나의 노드(Json용)로 리턴해 준다.
function makeJSONNode($sql, $container)
{
	$sql_start_tm = get_mtime(); 	// 쿼리 시작 시간
	
	$result = mssql_query($sql);	
	$fieldLength = mssql_num_fields($result);
	$container = strtoupper($container);
	$jsonRows = Array();
	$container = Array();
	
	$rowCnt = 0;
	
	while($row = mssql_fetch_array($result))
	{
		for ($k=0; $k<$fieldLength; $k++)
		{
			$fieldNm = mssql_field_name($result, $k);
			$vFieldNm = strtoupper($fieldNm);
			$cellValue = str_replace("\"","'",$row[$fieldNm]);
			$jsonRows[$vFieldNm] = urlencode(str_replace("\n", "<br />",$cellValue));
		}
		$container[] = $jsonRows;
		$rowCnt++;
	}
	
	$sql_exec_tm = get_mtime() - $sql_start_tm; // 쿼리 종료 시간으로 총 소요시간 구하기
	
	$container['TOTAL_COUNT'] = $rowCnt;
	$container['EXEC_TIME'] = floor($sql_exec_tm*100000)/100000;
	return $container;
}


//## 쿼리 결과를 하나의 배열(Json용 - JQgrid 전용)로 리턴해 준다.
function makeJSONjqGrid($sql,$startNo)
{
	$sql = iconvEncode($sql); //한글 포함된 쿼리 인코딩
	$sql_start_tm = get_mtime(); 	// 쿼리 시작 시간
	
	$result = mssql_query($sql);	
	$fieldLength = mssql_num_fields($result);	
	$container = strtoupper($container);
	$jsonRows = Array();
	$jsonResult = Array();
	$jsonFields = Array();
	
	$rowCnt = 0;
    $fieldNames = "";

	while($row = mssql_fetch_array($result))
	{
		for ($k=0; $k<$fieldLength; $k++)
		{
			$fieldNm = mssql_field_name($result, $k);
			$vFieldNm = strtoupper($fieldNm);
            if ($fieldNames) $fieldNames .= ",";
            $fieldNames .= $vFieldNm;
			if ($k == 0) {
				$id = $row[$fieldNm];
				$jsonFields[$k] = $row[$fieldNm]; //첫번째 필드는 반드시 Key 값을 배치한다.
				$jsonFields[$k+1] = $startNo;
			}
			else {
				$jsonFields[$k+1] = urlencode(str_replace("\n", "<br />",$row[$fieldNm]));	
			}
			
		}
		$jsonRows[$rowCnt]['id'] = $id;
		$jsonRows[$rowCnt]['cell'] = $jsonFields;
		$rowCnt++;
		$startNo--;
	}
	
	$sql_exec_tm = get_mtime() - $sql_start_tm; // 쿼리 종료 시간으로 총 소요시간 구하기
	
	$jsonResult['records'] = $rowCnt;
	$jsonResult['rows'] = $jsonRows;
	$jsonResult['execTime'] = $sql_exec_tm;
    $jsonResult['KEYS'] = $fieldNames;
	return $jsonResult;
}

//## 쿼리 결과는 XML로 리턴해 주는 함수, $container : 최상의 XML Node 이름
function makeXML($sql, $container, $addVal)
{
	$result = mssql_query($sql);	
	$fieldLength = mssql_num_fields($result);
	
	$xmlNm = strtoupper($container);
	$xml = "<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n";
	$xml .= "<{$xmlNm}>\n";
	$xml .= "	<TOTALCNT>{##ROW^CNT##}</TOTALCNT>\n";
	if($addVal) $xml .= "	<ADDVALUE>{$addVal}</ADDVALUE>\n";
	$rowCnt = 0;
	while($row = mssql_fetch_array($result))
	{
		$xml .= "	<ROWS>\n";
		for ($k=0; $k<$fieldLength; $k++)
		{
			$fieldNm = mssql_field_name($result, $k);
			$vFieldNm = strtoupper($fieldNm);
			//$xml .= "		<{$vFieldNm}><![CDATA[{$row[$fieldNm]}]]></{$vFieldNm}>\n";
			$xml .= "		<{$vFieldNm}>{$row[$fieldNm]}</{$vFieldNm}>\n";
		}
		$xml .= "	</ROWS>\n";
		$rowCnt++;
	}
	$xml .= "</{$xmlNm}>";
	$xml = str_replace("{##ROW^CNT##}",$rowCnt,$xml);
	return $xml;
}
 
//## 하나의 필드의 값 가져오기
function aFieldValue($sql)
{
	$rslt = mssql_query($sql);
	$val = "";
	$rowNum = mssql_num_rows($rslt);
	if($rowNum > 0){
		$row = mssql_fetch_array($rslt);	
		$val = $row[0];
	}
	return $val;
}
?>